diff --git a/build/cmake/modules/JasOpenGL.cmake b/build/cmake/modules/JasOpenGL.cmake
index b58b8de..4e58ead 100644
--- a/build/cmake/modules/JasOpenGL.cmake
+++ b/build/cmake/modules/JasOpenGL.cmake
@@ -5,50 +5,28 @@
 if (JAS_ENABLE_OPENGL)
 	set(OpenGL_GL_PREFERENCE GLVND)
 	find_package(OpenGL ${JAS_REQUIRED})
-	message("OpenGL library found: ${OPENGL_FOUND}")
-else()
-	set(OPENGL_FOUND false)
-endif()
-if (JAS_ENABLE_OPENGL AND OPENGL_FOUND)
-	set(JAS_HAVE_OPENGL 0)
-	message("OpenGL include directory: ${OPENGL_INCLUDE_DIR}")
-	message("OpenGL libraries: ${OPENGL_LIBRARIES}")
+	if (TARGET OpenGL::GL)
+		message("OpenGL library found: ${OPENGL_FOUND}")
+		message("OpenGL include directory: ${OPENGL_INCLUDE_DIR}")
+		message("OpenGL libraries: ${OPENGL_LIBRARIES}")
+	endif()
 	find_package(GLUT ${JAS_REQUIRED})
-	message("GLUT library found: ${GLUT_FOUND}")
-	if (GLUT_FOUND)
+	if (TARGET GLUT::GLUT)
 		message("GLUT include directory: ${GLUT_INCLUDE_DIR}")
 		message("GLUT libraries: ${GLUT_LIBRARIES}")
-		set(CMAKE_REQUIRED_INCLUDES ${GLUT_INCLUDE_DIR})
+	endif()
+	if((TARGET OpenGL::GL) AND (TARGET GLUT::GLUT))
 		check_include_files(GL/glut.h JAS_HAVE_GL_GLUT_H)
 		check_include_files(glut.h JAS_HAVE_GLUT_H)
 		if (JAS_HAVE_GL_GLUT_H OR JAS_HAVE_GLUT_H)
+			set(JAS_OPENGL_TARGETS GLUT::GLUT OpenGL::GL)
+			if (TARGET OpenGL::GLU)
+				set(JAS_OPENGL_TARGETS ${JAS_OPENGL_TARGETS} OpenGL::GLU)
+			endif()
 			set(JAS_HAVE_OPENGL 1)
-			include_directories(${GLUT_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
 		else()
 			message(WARNING "The header files GL/glut.h and glut.h both appear to be missing.")
 			message(WARNING "Disabling OpenGL.")
 		endif()
 	endif()
-	# On some systems (e.g., Fedora 21), there is a bug in the cmake code
-	# that detects GLUT libraries.  The following ugliness is a workaround for 
-	# this problem.
-	if (NOT GLUT_Xmu_LIBRARY OR NOT GLUT_Xmi_LIBRARY)
-		if (NOT GLUT_Xmu_LIBRARY)
-			set(GLUT_Xmu_LIBRARY "")
-			message(WARNING "Clearing bogus value for GLUT_Xmu_LIBRARY.")
-			message(WARNING "Your version of CMake may be buggy.")
-		endif()
-		if (NOT GLUT_Xmi_LIBRARY)
-			set(GLUT_Xmi_LIBRARY "")
-			message(WARNING "Clearing bogus value for GLUT_Xmi_LIBRARY.")
-			message(WARNING "Your version of CMake may be buggy.")
-		endif()
-		set(GLUT_LIBRARIES "${GLUT_glut_LIBRARY}")
-	endif()
-else()
-	set(JAS_HAVE_OPENGL 0)
-	set(OPENGL_INCLUDE_DIR "")
-	set(OPENGL_LIBRARIES "")
-	set(GLUT_INCLUDE_DIR "")
-	set(GLUT_LIBRARIES "")
 endif()
diff --git a/src/appl/CMakeLists.txt b/src/appl/CMakeLists.txt
index 1b865de..3d0c57b 100644
--- a/src/appl/CMakeLists.txt
+++ b/src/appl/CMakeLists.txt
@@ -22,10 +22,9 @@ set(man_pages "${man_pages}" imgcmp.1)
 # The jiv program (which requires GLUT)
 if(JAS_HAVE_OPENGL)
 	add_executable(jiv jiv.c)
-	target_include_directories(jiv PUBLIC
-	  ${GLUT_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
-	target_link_libraries(jiv libjasper ${JPEG_LIBRARIES} ${GLUT_LIBRARIES}
-	  ${OPENGL_LIBRARIES} ${MATH_LIBRARY})
+	target_link_libraries(jiv libjasper
+	  ${JPEG_LIBRARIES} ${HEIF_LIBRARIES} ${JAS_OPENGL_TARGETS}
+	  ${JAS_OPENGL_TARGETS} ${MATH_LIBRARY} ${THREAD_LIBRARY})
 	set(programs "${programs}" jiv)
 	set(man_pages "${man_pages}" jiv.1)
 else()
